package com.gitee.sop.layui.adminserver.module.background.admin.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gitee.sop.layui.adminserver.module.background.admin.entity.SysUser;

import java.util.List;
import java.util.Set;

/**
 * com.zch.admin.base.entity.SysUser模型业务接口
 *
 * @author: admin
 * @date: 2019-11-13
 * @version: 1.0.0
 */
public interface SysUserService extends IService<SysUser> {

    /**
     * 删除角色及其关联信息：角色关联
     *
     * @param uuid 用户uuid
     */
    void deleteByUuid(String uuid);

    /**
     * 添加新用户
     *
     * @param sysUser 用户信息
     */
    void add(SysUser sysUser);

    /**
     * 更新用户密码
     *
     * @param oldPassword 旧密码
     * @param password    新密码
     */
    void setPassword(String oldPassword, String password);

    /**
     * 获取指定用户名的用户信息
     *
     * @param username
     * @return
     */
    SysUser getOneByUsername(String username);

    /**
     * 获取用户的功能角色列表
     *
     * @param uuid 用户uuid
     * @return
     */
    List<String> getFunctionRoleListByUuid(String uuid);

    /**
     * 获取用户的菜单url地址列表
     *
     * @param appId    应用id
     * @param userUuid 用户uuid
     * @return
     */
    Set<String> getPermissionUrls(String appId, String userUuid);

    /**
     * 分页获取指定用户创建的用户数据
     *
     * @param current  当前页
     * @param size     页显示数
     * @param name     用户名称
     * @param username 账户
     * @return
     */
    IPage<SysUser> getPageByUserUuid(int current, int size, String name, String username);

    /**
     * 获取被禁用的主账户数量
     *
     * @param uuid 用户uuid
     * @return
     */
    int getDisableMasterUserCount(String uuid);

    /**
     * 更新指定uuid用户的信息
     *
     * @param modify 更新信息
     */
    void updateByUuid(SysUser modify);

    /**
     * 获取指定uuid的用户
     *
     * @param uuid 用户uuid
     * @return
     */
    SysUser getOneByUuid(String uuid);
}